无法更改页面中的对象值,但在控制台日志中显示为工作(angularjs)

Posted

技术标签:

【中文标题】无法更改页面中的对象值,但在控制台日志中显示为工作(angularjs)【英文标题】:Trouble changing object value in page, but shows up in console log as working (angularjs) 【发布时间】:2015-07-25 11:38:00 【问题描述】:

我想根据用户单击的内容更改对象变量mF,这会将对象数组中的一个对象分配给变量mF,并将它们带到下一个“页面”。

我正在使用 ng-click 通过函数将对象分配给mf。我正在使用 mF.name 来测试是否已将新对象分配给mF,并且我一直在绘制空白(没有输出到页面)。但是,当我在控制器中手动分配对象并使用console.log() 输出时,它正在工作。为什么不输出到页面?

代码:

app.js:

app.controller('DeviceController', function($scope) 

$scope.showOptions = false;

var device1 = [
    
        name: 'PC',
        os: 'Windows',
        chosen: false,
    ,
  ...
  ];

var device2 = [
  ...
  ...
];

var mF = ;

$scope.mF = mF;

console.log(mF);

function calculate (x) 
    mF = device1[x];


mF = device1[0];

console.log(mF.name); //outputs correctly in console - "PC"

);

html

<div ng-hide="showOptions">

<div class="osSelect"><span ng-click="calculate(0); showOptions = true">Win</span>
    <span ng-click="calculate(1); showOptions = true">Mac</span> <span ng-click="showOptions = true">test</span></div>
 </div>

<div class="pageHolder2" ng-show="showOptions">

<p>This is the 2nd page:  mF.name </p> <!-- outputs blank where expression is -->

<span class="back" ng-click="showOptions = false">Back</span>

</div>

【问题讨论】:

【参考方案1】:

您还需要将函数 calculate 附加到作用域,以便从视图绑定中调用它。

那就试试吧:

$scope.calculate = function calculate (x) 
    $scope.mF = device1[x];

【讨论】:

成功了,谢谢!你知道为什么console.log() 不需要$scope 吗?

以上是关于无法更改页面中的对象值,但在控制台日志中显示为工作(angularjs)的主要内容,如果未能解决你的问题,请参考以下文章

HTML 表单选择元素不允许更改

无法将页面更新(部署)到 Firebase 主机

工作日志-面向对象编程

在 iOS 7 中为第三方调试的应用程序中的日志语句显示控制台

php网页跳转无法获取session值

安全地更改 NSLayoutConstraint 常量值