我正在使用带有控制器(ListController)的isteven-multi-select,它使用" $ scope.mainCategories"对于由"选中"填充的内容布尔值。
在应用程序的标题中,我使用select元素允许用户选择单个类别(然后转发到列表页面)。我正在使用这个select元素来切换$ scope.mainCategories中的勾选布尔值。
两者都使用相同的控制器,尽管通过UI-Router(可能的问题)单独引用
views: {
'header@index': {
templateUrl: 'header.html',
controller: "ListController"
},
'container@index': {
templateUrl: 'search.html',
controller: 'ListController'
},
}
然后isteven-multiselect和select元素在同一部分 - 功能有效 - 当在单独的部分上时功能被破坏。
答案 0 :(得分:1)
x
可能不是您所期望的,因为除非您传入实际对象,否则无法在此行中查找对象索引:
var x = $scope.mainCategories.indexOf(item);
我假设你试图传递类似的内容:
{
category: "Adventure",
ticked: false
}
并获得索引,它将无法正常工作。例如,您需要遍历数组并匹配category
。
但是你修改外部数组的方法很好。
请参阅此示例以了解我的意思:
var people = [
{name: 'Shomz'},
{name: 'John'}
];
alert(people.indexOf({ name: 'John'})); // -1: the copy of object not found
alert(people.indexOf(people[1])); // 1: actual reference found
要手动更新范围,请将代码包装在$ timeout回调中,或使用:
$scope.$apply();
答案 1 :(得分:1)
$scope.update = function(item) {
item.ticked = true; // ?
};
$scope.mainCategories = [{
category: "Adventure",
ticked: false
},{category: "Fantasy",
ticked: false}];
让你的函数获取你想要修改的对象并从视图中传入它。