Javascript AngularJs:在指令之间共享模型数据
我似乎无法在Angular指令中找到合适的绑定。我有以下代码: html 请点击此处:Javascript AngularJs:在指令之间共享模型数据,javascript,angularjs,Javascript,Angularjs,我似乎无法在Angular指令中找到合适的绑定。我有以下代码: html 请点击此处: 有四个h2,每个h2都绑定到它们自己的chore对象。我想要的是能够单击其中一个h2,将单个chore绑定到控制器的作用域(并用chore的模型数据填充输入),对其中一个输入元素进行更新,单击“更新名称”按钮,并让该模型数据更新所单击的h2。您的对象是{chore:chore},因此您应该在警报中引用chore.chore.name而不是chore.name $scope.updateName = funct
有四个h2,每个h2都绑定到它们自己的
chore
对象。我想要的是能够单击其中一个h2,将单个chore
绑定到控制器的作用域(并用chore
的模型数据填充输入),对其中一个输入元素进行更新,单击“更新名称”按钮,并让该模型数据更新所单击的h2。您的对象是{chore:chore}
,因此您应该在警报中引用chore.chore.name而不是chore.name
$scope.updateName = function (chore) {
alert('okay ' + chore.chore.name);
//$scope.Chore.color = 'pink';
};
或者,您可以更改传递信息的方式:
clicky-thing='updateName(chore)'
另外,$scope.clickyThing实际上引用了一个可执行函数,该函数包含一个使用clicky thing属性中的文本创建的函数,您只需要在不带任何参数的情况下执行它
elem.bind('click', function () {
scope.clickyThing();
});
除非您所做的不仅仅是执行传入的代码,否则您可能只需使用ng单击即可。您的对象是
{chore:chore}
,因此您应该在警报中引用chore.chore.name而不是chore.name
$scope.updateName = function (chore) {
alert('okay ' + chore.chore.name);
//$scope.Chore.color = 'pink';
};
或者,您可以更改传递信息的方式:
clicky-thing='updateName(chore)'
另外,$scope.clickyThing实际上引用了一个可执行函数,该函数包含一个使用clicky thing属性中的文本创建的函数,您只需要在不带任何参数的情况下执行它
elem.bind('click', function () {
scope.clickyThing();
});
除非您所做的不仅仅是执行传入的代码,否则您可能只需使用ng单击即可。下面是一个更新的提琴: 更新指令:
app.directive("announce", function () {
return {
restrict: "A",
scope: {
clickyThing: '&',
chore: '='
},
link: function (scope, elem, attrs) {
var chore = scope.chore;
elem.bind('click', function () {
scope.clickyThing(chore);
});
}
};
});
解决的问题:
我同意凯文的观点,你可能应该改用ng click。这里是一个更新的提琴: 更新指令:
app.directive("announce", function () {
return {
restrict: "A",
scope: {
clickyThing: '&',
chore: '='
},
link: function (scope, elem, attrs) {
var chore = scope.chore;
elem.bind('click', function () {
scope.clickyThing(chore);
});
}
};
});
解决的问题:
我同意Kevin的观点,您可能应该改用ng click。首先,您的输出是Dude,输出很奇怪(这是本代码中一次奇怪旅程的结果),但它是正确的。它可以很容易地更改为您的对象是{chore:chore},因此,您应该在警报中引用chore.chore.name而不是chore.name。首先,您的输出是Dude。输出很奇怪(这是本代码中一次奇怪旅程的结果),但它是正确的。它可以很容易地更改为您的对象是{chore:chore},因此,您应该在警报中引用chore.chore.name,而不是chore.name。本例中的ng单击为+1。本例中的ng单击是人为的,代表更大的解决方案。本例中的ng单击为+1。本例中的ng单击是人为的,代表更大的解决方案。是否检查了您的小提琴?当c更改颜色值后单击“更新到”按钮,$scope.$apply(以及相关的解释)帮助很大。在方法中定义模型是否是idomatic的?是否最好在$scope.chore下定义$scope.chore(意识到它的命名不好)?是的,在控制器中定义模型并将其分配给作用域是惯用的。或者,模型可以来自服务/工厂-也是可以接受的和良好的实践。我将使用小写作为模型名称的命名约定。是的,我必须欣赏poxelbits的示例方式。它工作得很好。没问题。但是如果我更改颜色并按下下面的按钮,会出现$digest错误,这是错误的。您是否检查了小提琴?在更改颜色值后单击“更新到”按钮时,会出现$digest错误。$scope.$apply(及相关说明)帮助很大。在一个方法中定义一个模型是idomatic吗?在$scope.chore下定义$scope.chore会更好吗(意识到它的命名不好)?是的,在控制器中定义模型并将其分配给作用域是惯用的。或者,模型可以来自服务/工厂-也是可以接受的和良好的实践。我将使用小写作为模型名称的命名约定。是的,我必须欣赏poxelbits的示例方式。它工作得很好。没问题。但是如果我改变颜色并按下下面的按钮会怎么样?它会给出$diegest错误,这是错误的。