1

小提琴:http: //jsfiddle.net/RnJbt/2/

我有一个模板块,我在其中启动一个本地模型,这对于包含在命名空间中并不重要,但对模板的范围很有用。当用户点击一个按钮时,模型被传递给一个函数。该函数应该更新模型的值。

Fiddle 表明模型“deneme”在作为参数传递给更新函数时不会改变。但是如果我通过$scope下面给出的对象访问模型,我可以更新“更新”函数中的值。

...controller...
    $scope.update = function(val){
        val = 10; // does not update deneme 
        $scope.deneme = 34; // updates it as expected
    }   

我不想用只对它们启动的模板块有用的一次性模型名称污染控制器的命名空间。我如何在控制器范围内处理几乎匿名的参数,而不必用它们的名字来声明它们?

4

1 回答 1

1

这是因为它是一个原始值。我稍微改变了小提琴,就像这样,它可以按您的预期工作:

ng-init="deneme = {value: 5}"

$timeout(function(){
val.value = 23;
.....

就像您将任何 javascript 变量设置为原始变量,然后将另一个变量设置为该值,然后重置原始变量一样。

var a = 10
var b = a
var a = 2
// a = 2, b = 10

几个月前我遇到了同样的问题,所以我仍然记忆犹新。

于 2013-07-26T19:59:43.570 回答