2015-10-05 24 views
0

我可以解决这个问题吗,或者这是一个不好的方法ng-repeatAngularJS通过函数ng-repeat from object

的标记:

<div ng-repeat="car in Ctrl.cars"> 
    <span>{{::car.color}}</span> 
    <span>{{::car.type}}</span> 
    <input ng-change="{{::car.function}}"/> 
</div> 

的JS:

scope.cars = [ 
    {color: 'red', type: 'Ferrari', function:''}, 
    {color: 'green', type: 'Subaru', function: scope.doSomething}, 
]; 

我想输入的变化运行doSomething()。你知道这个解决方案吗?

谢谢!

回答

1

我注意到关于你的片断的第一件事是,你使用的是保留关键字function作为JS对象的关键。你可以自由地做,如果你让JS知道这是一个字符串:{ "function": "someotherval" }

要调用从视图功能,你可以这样做:

<input ng-change="car['function']()"/> 

如果角度不能与此语法应对,我建议像changeCallback这样的东西作为价值的关键。这为我工作:

<input ng-change="car.changeCallback()"/> 
{color: 'red', type: 'Ferrari', changeCallback: scope.doSomethingAmazing } 

本身所需要的功能来定义:

scope.doSomethingAmazing = function() { /* */ } 
1

你靠近是......这是怎么运作的,你只是做:

<input ng-model="car.myModel" ng-change="car.myFunction(car.myModel)"/> 
2

首先,不使用function,因为它是一个JS关键字。比方说,你的场重命名为functionToCall ...

其次,你不能使用插值,并且必须通话功能:

<input ng-change="car.functionToCall()"/> 

如果你什么都不想要发生的一些汽车,然后不初始化函数的字符串来调用,与什么都不做的函数初始化:

{color: 'red', type: 'Ferrari', functionToCall: angular.noop} 
+0

谢谢,这是有益的,我在Angularjs是新的,我没听不到'angular.noop'。当然'功能'就是例子。 :) – munkacsimark