我在knockoutjs中为kendo网格编写了自定义绑定元素。我面对这个问题徘徊。任何人都可以告诉我差异statement 1
和statement 2
var newObj = { obj1 : 'One', obj2: 'Two', obj3: true, obj4: [ 'One','Two' ] }
//***Statement 1
return newObj; // By this statement am getting an error
//******
//****** Statement 2
var result = function(){ return newObj; }
return result; // By this statement program is working
// ******
答案 0 :(得分:1)
调用代码需要一个返回对象的函数...
代码可以做很多聪明的事情来接受两者,但如果它有一个简单明了的界面则更简单。服从那个界面。
一个例子。
"有人给你一件新衬衫。"
你可以做聪明的想法,看看礼物是否包装在一个漂亮的礼品盒中,并采取适当的行动。 (1)如果礼物被包裹,则将其打开并佩戴。 (2)如果没有包裹就穿它。
要创建您正在使用的函数的接口(或传递回调,或者您在代码中使用的某些函数),他们选择不做聪明的事情(可能很难编程一些)然后是喜欢有人给你一件未包装的衬衫,但是你希望它被包裹起来,所以你只需将衬衫拆开试图打开它(但它没有被包裹)。
<强>要点:强>
答案 1 :(得分:1)
如果你真的使用淘汰赛,因为你的标签建议......我会在黑暗中刺伤并说你可能正在寻找这样的东西:
请注意,newObj是一个可观察的,您可以使用newObj()访问该对象
var model = function(){
var newObj = ko.observable({ obj1 : 'One', obj2: 'Two', obj3: true, obj4: [ 'One','Two' ] })
//***Statement 1
function alertObj1(){
//Notice i access object with () here. It is an observable is essentially a function.
alert(newObj().obj1);
}
return {
newObj: newObj,
alertObj1: alertObj1
}
}
ko.applyBindings(model);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div data-bind="with: newObj">
<div data-bind="text: obj1"></div>
<div data-bind="text: obj2"></div>
<div data-bind="text: obj3"></div>
<h1>foreach</h1>
<div data-bind="foreach: obj4">
<div data-bind="text: $data"></div>
</div>
</div>
<button data-bind="click: alertObj1" >Alert Prop Obj1</button>
&#13;
答案 2 :(得分:0)
感谢您的回复。
实际上用户:Sxntk评论有助于以不同的方式思考它。通过小型研究我才知道kendo接受函数,该函数返回对象。
最后特别感谢Prusse和4imble。因为你们,我有两件新事物。您的所有解释都是正确的,但sxntk
答案适合我的问题。