Model view controller 在指令中更新angularjs中的控制器模型
我试图理解angularJS,它的方法与我所看到的脏检查模型更新不同 基本上,我有一个指令Model view controller 在指令中更新angularjs中的控制器模型,model-view-controller,angularjs,Model View Controller,Angularjs,我试图理解angularJS,它的方法与我所看到的脏检查模型更新不同 基本上,我有一个指令ng draggable,它使元素。。。拖拉的。我有一个与每个元素链接的模型,该模型具有属性x和y——与模型链接的元素的位置——我希望指令更新模型 为此,我尝试在指令中使用$apply函数并设置模型值x和y。然后我还使用$observe函数更新视图:。(注意我使用工厂捕捉鼠标事件) 它似乎工作得很好。但是,当我使用保存按钮检查模型值时(它在控制台中打印模型),位置x和y不会更新 所以我的问题是如何让它工作?
ng draggable
,它使元素。。。拖拉的。我有一个与每个元素链接的模型,该模型具有属性x
和y
——与模型链接的元素的位置——我希望指令更新模型
为此,我尝试在指令中使用$apply
函数并设置模型值x和y。然后我还使用$observe
函数更新视图:。(注意我使用工厂捕捉鼠标事件)
它似乎工作得很好。但是,当我使用保存按钮检查模型值时(它在控制台中打印模型),位置x和y不会更新
所以我的问题是如何让它工作?更一般地说,这里发生了什么?关于angularJS中MVC模式的任何阅读建议(我发现开发者指南对初学者来说有点苛刻)
谢谢您的帮助。您的方法的问题是您正在更改整个
ngModel
参考,而不是仅更改其一个属性(x
和/或y
)。执行此操作时,会断开与初始ngModel
(播放器中的对象数组)的连接,从而断开与“真实”模型(对象play
)的连接
试着这样做:
scope.$apply(function() {
model.$modelValue.x = event.screenX - startX;
model.$modelValue.y = event.screenY - startY;
});
jsiddle:谢谢!一定要很好地理解你;在我的指令中传递的ngModel不是当前的模型,但如果我理解,一种“即时”控制器,允许修改我的模型?最初传递给指令的
ngModel
是正确的,问题是您正在用指令中创建的新对象替换它。这就像你在做model.$modelValue=newobject()代码>导致$modelValue
不再引用players
数组中的元素(初始ngModel
),而是引用刚刚创建的新对象。啊!好了,现在我想我明白了。。。谢谢你的精确。
scope.$apply(function() {
model.$modelValue.x = event.screenX - startX;
model.$modelValue.y = event.screenY - startY;
});